package com.liunian;

import com.liunian.discovery.RegistryConfig;
import com.liunian.heartbeatdetect.HeartbeatDetector;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

@Slf4j
public class ConsumerApplication {

    public static void main(String[] args) {
        // 想尽一切办法获取代理对象，使用 ReferenceConfig 进行封装
        // reference 中一定有生成代理的模板方法，get()
        ReferenceConfig<HelloWrpc> reference = new ReferenceConfig<>();
        reference.setInterface(HelloWrpc.class);

        // 代理做了些什么？
        //              1、连接注册中心
        //              2、拉取服务列表
        //              3、选择一个服务并建立连接
        //              4、发送请求，携带一些信息（接口名，参数列表，方法名），获得结果

        WrpcBootstrap.getInstance()
                .application("first-Wrpc-consumer")
                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
                .serialize("hessian")
                .compress("gzip")
                .group("primary")
                .reference(reference);

        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
        HelloWrpc helloWrpc = reference.get();
        while (true) {
//        while (true) {
//            try {
//                Thread.sleep(10000);
//                System.out.println("===============================================================================================");
//            } catch (InterruptedException e) {
//                throw new RuntimeException(e);
//            }
//             获取一个代理对象
            helloWrpc = reference.get();
            for (int i = 0; i < 50; i++) {
                String sayHi = helloWrpc.sayHi("你好");
                log.info("sayHi --> {}", sayHi);
            }
        }
    }

}
